1. Field of the Invention
The present invention relates to data communications. More particularly, the present invention relates to coding multiple bits of data in parallel (e.g., using a multiple-port memory) to significantly reduce delays associated with coding.
2. Description of the Related Art
In a typical digital communications system, data is processed, modulated, and conditioned at a transmitter unit to generate a modulated signal that is then transmitted to one or more receiver units. The data processing may include, for example, formatting the data into a particular frame format, coding the formatted data with a particular coding scheme to provide error detection and/or correction at the receiver units, channelizing (i.e., covering) the coded data, and spreading the channelized data over the system bandwidth. The data processing is typically defined by the system or standard being implemented.
At the receiver unit, the transmitted signal is received, conditioned, demodulated, and digitally processed to recover the transmitted data. The processing at the receiver unit is complementary to that performed at the transmitter unit and may include, for example, despreading the received samples, decovering the despread samples, and decoding the decovered symbols to recover the transmitted data.
The ability to correct transmission errors enhances the reliability of a data transmission. Many digital communications systems employ a convolutional code or a Turbo code to provide error correction capability at the receiver units. Convolutional codes operate on serial data, one or a few bits at a time. There are a variety of useful convolutional codes, and a variety of algorithms for decoding the received coded information sequences to recover the original data. Turbo coding specifically is a parallel-concatenated convolutional coding scheme. A concatenated code is a cascaded combination of two or more codes and is used to provide additional error correction capabilities. For a concatenated code, the code bits between the coding stages may be interleaved (i.e., reordered) to provide temporal diversity, which can further improve performance. An entire packet or frame of code bits is typically stored before the reordering is performed. The reordered code bits are then serially retrieved and coded by the next coding stage.
Conventionally, convolutional and Turbo coding is performed serially on an input bit stream. For each clock cycle, one data bit is provided to the encoder and two or more code bits are generated depending on the code rate of the encoder. Some of the code bits may then be punctured (i.e., deleted) to obtain code bits at other code rates.
Digital multiple access communications systems typically transmit data in packets or frames to allow for efficient sharing of system resources among active users. For services that cannot tolerate long delays (e.g., voice, video), the packets are selected to be short in duration (e.g., 10 msec) and the codes are accordingly selected to have shorter processing delays. However, for improved coding efficiency, it is desirable to process and code larger sized packets, which can result in longer processing delays using the conventional technique that serially codes data. The long processing delays may adversely impact the performance of the communications system. For example, a particular user or data rate may be selected for a particular data transmission based on the conditions of the communications link. If the processing delays are excessively long, the link conditions may have changed by the time of the data transmission, and performance may be compromised or adversely affected.
As can be seen, techniques that can be used to efficiently code data with shorter processing delays are highly desirable.